Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2019-CVPR-[PENCIL]Probabilistic End-To-End Noise Correction for Learning With Noisy Labels

https://openaccess.thecvf.com/content_CVPR_2019/html/Yi_Probabilistic_End-To-End_Noise_Correction_for_Learning_With_Noisy_Labels_CVPR_2019_paper.html

Introduction

既存の手法では、一部のCleanなラベル、ノイズについての事前情報が必要であった。

この論文では、以下のような貢献をしている。

  1. PENCILというend-to-endのフレームワークを提案した。ネットワーク本体の構造とは関係ないもので、本来のパラメタを更新する前に確率的にサンプルのラベルを修正するものである
  2. PENCILはロバストであり、Noisy Labelに強いだけではなく、ノイズがないと思われる環境でも存在する潜在的なノイズに対しても強いとわかった
  3. この論文のやっていること
    1. ラベルは固定された値ではなく、分布で表すように考える。
    2. 先行研究を参考し、ラベルの分布をネットワークの学習の時とラベルのノイズ除去?の時と同時に各イテレーションごとに行う。

Related Work

Deep Label Distribution Learning。分布を離散化してKLダイバージェンスの最小化をするという手法らしい。

Bin-Bin Gao, Chao Xing, Chen-Wei Xie, Jianxin Wu, and Xin Geng. Deep label distribution learning with label ambiguity. IEEE Trans. Image Processing, 26(6):2825–2838, 2017.

DNNの記憶力が高くてNoiseまで覚えてしまうことを言ってるらしい。

Zhilu Zhang and Mert R. Sabuncu. Generalized cross entropy loss for training deep neural networks with noisy labels. In NIPS, 2018

学習率が高ければ、高いAccuracyを保てるらしい。移動平均をとるという手法。PENCILはその改良版

Arash Vahdat. Toward robustness against label noise in training deep discriminative neural networks. In NIPS, pages 5601–5610, 2017.
Tong Xiao, Tian Xia, Yi Yang, Chang Huang, and Xiaogang Wang. Learning from massive noisy labeled data for image classification. In CVPR, pages 2691–2699, 2015.
Jiangchao Yao, Jiajie Wang, Ivor W Tsang, Ya Zhang, Jun Sun, Chengqi Zhang, and Rui Zhang. Deep learning from noisy image labels with quality embedding. IEEE Transactions on Image Processing, 2018.

提案手法のPENCIL

文字表記

  • ハードラベルはone-hotなラベルであり、H\mathcal{H}がその空間だとする。
  • ソフトラベルはone-hotではなく実数をとるが、和が1である。その空間はS\mathcal{S}である。
    • これがラベル分布であるとみなせる。
    • よく見たらlabel smoothingっぽいよな。

Noisy Labelの確率モデル

このPENCILという手法では、H\mathcal{H}に所属するone-hotラベルではなく、S\mathcal{S}に属するソフトラベルを使用する。そしてそのソフトラベルを学習を通して徐々に変化させていく=修正していく

既存のDLDLでは、以下のものを損失として使っていた。

Image in a image block

だが、KLダイバージェンスの中身を入れ替えたほうがよりうまく表現できる。

Image in a image block

なぜなら、ラベル分布ydy^d(後述)について更新したいため、Lc/yd\partial \mathcal{L_c}/\partial y^dを計算したい。それぞれの微分は上下のKLダイバージェンスに対応している。

Image in a image block

この時、下のほうが極端にydy^dのgradientが変わる。PENCILで提案した分布の極端な遷移は、極端なgradientで動かすほうが有効だそうだ。

全体的な構造

Image in a image block

赤線が順伝搬、青点線が逆伝搬。

  • ラベルは3種類ある。
    • y^\hat{y}は与えらえれたNoisyなone-hotラベル。
    • y~\tilde{y}はじめはy~=Ky^\tilde{y} = K \hat{y}で更新されるKKはハイパラで、実験では10としてる。
      • つまり最初はone-hotのまま。
    • ydy^dy~\tilde{y}をsoftmaxしたもの
      • 最初では、(0,10,0,)(0, 10, 0, \cdots)からsoftmaxされるので、ある程度突出しながらもsmoothingなydy^dが得られる。
  • 損失は3種類ある。
    • Compatibility Loss 与えられたラベルはNoisyと言っても大半が正解なので、大きくydy^dy^\hat{y}から離れてほしくない。よって、以下のようなy^\hat{y}ydy^dによる全iiについて合算したクロスエントロピー誤差をつけ、大きく離れないようにした
      LO(Y^,Yd)=1ni=1nj=1cy^ijlogyijd\mathcal{L}_O (\hat{Y}, Y^d) = - \frac{1}{n} \sum_{i=1}^n \sum_{j=1}^c \hat{y}_{ij} \log y^d_{ij}
    • Classification Loss 上で議論したKLダイバージェンスの部分そのもの。予測結果f(xi;θ)f(\mathbf{x}_i ; \theta)と分布ydy^dの距離を測る。L\mathcal{L}と表記しているが、これはLC\mathcal{L}_Cである。
      Image in a image block
    • Entropy Loss f(xi;θ)f(\mathbf{x}_i ; \theta)ydy^dを目標に学習するが、同じような分布になったら更新が止まる。経験上これは早期に止まりすぎているので、止まるならせめて1つのピーク値を作って止まるように、正則化項としてエントロピー項で正則化を加える。

全体的な損失関数

カテゴリ数ccであるとき、α,β\alpha, \betaがハイパーパラメタとすると以下のように損失関数を組み立てる。

Image in a image block

なお、Backbornのモデルが完璧に訓練されていたら、PENCILのフレームワークはいらない。

実際の訓練では、記憶の順序などを考慮し以下のように行う。人力でカリキュラム学習みたい

  1. 高い学習率で学習すればNoiseに過学習しづらいので、まず高い学習率でBackbornを訓練する。目標はある程度正しいものを導入。
  2. PENCILフレームワークを導入して、分布を学習させる。学習率はまだ高いままにしておく。なお、PENCILのy~\tilde{y}の更新はKLダイバージェンスのところでもふれたが、さらに高い学習率をもっと高くしておく=そうしないとNoisyがピークの分布から正しいものがピークの分布に収束しない。
  3. α=β=0\alpha=\beta=0にして、Lc\mathcal{L_c}だけで学習する。もうすでに十分にy~\tilde{y}は正しい分布になったからである。

Experiment

使うデータセットは以下の通り。

  • CIFAR-100 10%をvalidationにして、人工的に対称的、非対称的ノイズを付与。
  • CIFAR-10 上と同様
  • Clothing1M もともとNoisyなデータセット。40%間違えているという。非対称ノイズが多い。データ分布が著しく一様ではないので、一様なものを人工的に選び出して実験した。
  • CUB-200 NoisyではないデータセットのはずなのにPENCIL使ったら性能上がったので実はNoisyだったんじゃないの?

Noise率が高いとPENCILの利点が出るがさすがに高すぎる=80%とかになるとbootstrappingするのに向いてないよ。